import request from '@/utils/request'

// 获取服务器主机列表
export function getServerHostList(params) {
  return request({
    url: '/server/host/list',
    method: 'get',
    params: params
  })
}

// 获取服务器主机详情
export function getServerHost(id) {
  return request({
    url: `/server/host/${id}`,
    method: 'get'
  })
}

// 添加服务器主机
export function addServerHost(data) {
  return request({
    url: '/server/host/add',
    method: 'post',
    data: data
  })
}

// 更新服务器主机
export function updateServerHost(id, data) {
  return request({
    url: `/server/host/${id}`,
    method: 'put',
    data: data
  })
}

// 删除服务器主机
export function deleteServerHost(id) {
  return request({
    url: `/server/host/${id}`,
    method: 'delete'
  })
}

// 批量删除服务器主机
export function batchDeleteServerHosts(ids) {
  return request({
    url: '/server/host/batch',
    method: 'delete',
    data: { host_ids: ids }
  })
}

// 批量导入服务器主机
export function batchImportServerHosts(data, autoInitRoot = false) {
  return request({
    url: '/server/host/import',
    method: 'post',
    params: { auto_init_root: autoInitRoot },
    data: data,
    timeout: 600000 // 10分钟超时（批量导入20台服务器需要较长时间）
  })
}

// 初始化root账号
export function initRootAccount(hostId) {
  return request({
    url: `/server/host/init-root/${hostId}`,
    method: 'post'
  })
}

// 批量初始化root账号
export function batchInitRootAccount(hostIds) {
  return request({
    url: '/server/host/batch-init-root',
    method: 'post',
    data: hostIds
  })
}

// 测试连接
export function testConnection(id) {
  return request({
    url: `/server/host/test-connection/${id}`,
    method: 'post'
  })
}

// 批量测试连接
export function batchTestConnection(hostIds) {
  return request({
    url: '/server/host/batch-test-connection',
    method: 'post',
    data: { host_ids: hostIds },  // 修复: 包装为对象，匹配后端参数名
    timeout: 300000 // 5分钟超时（批量测试20台服务器）
  })
}

// 执行命令（设置更长的超时时间，适应批量执行）
export function executeCommand(data) {
  return request({
    url: '/server/host/execute-command',
    method: 'post',
    data: data,
    timeout: 600000  // 10分钟超时，适应批量执行多台主机
  })
}

// 批量部署Agent
export function deployAgent(data) {
  return request({
    url: '/server/host/deploy-agent',
    method: 'post',
    data: data,
    timeout: 1800000 // 30分钟超时（批量部署需要下载依赖、安装环境等）
  })
}

// 控制Agent（启动/停止/重启）
export function controlAgent(data) {
  return request({
    url: '/server/host/control-agent',
    method: 'post',
    data: data,
    timeout: 120000 // 2分钟超时（批量控制多台服务器）
  })
}

// 获取Agent日志
export function getAgentLog(data) {
  return request({
    url: '/server/host/agent-log',
    method: 'post',
    data: data
  })
}

// 获取Agent日志日期列表
export function getAgentLogDates(hostId) {
  return request({
    url: `/server/host/agent-log-dates/${hostId}`,
    method: 'get'
  })
}

// 检查Agent状态
export function checkAgentStatus(hostId) {
  return request({
    url: `/server/host/check-agent-status/${hostId}`,
    method: 'get'
  })
}

// 上传Agent安装包文件
export function uploadAgentFile(file, onUploadProgress) {
  const formData = new FormData()
  formData.append('file', file)
  
  return request({
    url: '/agent-files/upload',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    timeout: 300000, // 5分钟超时（上传大文件）
    onUploadProgress: onUploadProgress // 支持上传进度回调
  })
}

